Method and apparatus for public key exchange in a cryptographic system

ABSTRACT

The present invention is an elliptic curve cryptosystem that uses elliptic curves defined over finite fields comprised of special classes of numbers. Special fast classes of numbers are used to optimize the modulo arithmetic required in the enciphering and deciphering process. The class of numbers used in the present invention is generally described by the form 2 q  -C where C is an odd number and is relatively small, for example, no longer than the length of a computer word (16-32 bits). When a number is of this form, modulo arithmetic can be accomplished using shifts and adds only, eliminating the need for costly divisions. One subset of this fast class of numbers is known as &#34;Mersenne&#34; primes, and are of the form 2 q  -1. Another class of numbers that can be used with the present invention are known as 14 &#34;Fermat&#34; numbers of the form 2 q  +1. The present invention provides a system whose level of security is tunable. q acts as an encryption bit depth parameter, such that larger values of q provide increased security. Inversion operations normally require an elliptic curve algebra can be avoided by selecting an inversionless parameterization of the elliptic curve. Fast Fourier transform for an FFT multiply mod operations optimized for efficient Mersenne arithmetic, allow the calculations of very large q to proceed more quickly than with other schemes.

This is a continuation of application Ser. No. 07/955,479, filed on Oct.2, 1992 now U.S. Pat. No. 5,271,061 which is a continuation ofapplication Ser. No. 07/761,276, filed on Sep. 17, 1991 now U.S. Pat.No. 5,159,632.

BACKGROUND OF THE PRESENT INVENTION

1. Field of the Invention

This invention relates to the field of cryptographic systems.

2. Background Art

A cryptographic system is a system for sending a message from a senderto a receiver over a medium so that the message is "secure", that is, sothat only the intended receiver can recover the message. A cryptographicsystem converts a message, referred to as "plaintext" into an encryptedformat, known as "ciphertext." The encryption is accomplished bymanipulating or transforming the message using a "cipher key" or keys.The receiver "decrypts" the message, that is, converts it fromciphertext to plaintext, by reversing the manipulation or transformationprocess using the cipher key or keys. So long as only the sender andreceiver have knowledge of the cipher key, such an encryptedtransmission is secure.

A "classical" cryptosystem is a cryptosystem in which the encipheringinformation can be used to determine the deciphering information. Toprovide security, a classical cryptosystem requires that the encipheringkey be kept secret and provided to users of the system over securechannels. Secure channels, such as secret couriers, secure telephonetransmission lines, or the like, are often impractical and expensive.

A system that eliminates the difficulties of exchanging a secureenciphering key is known as "public key encryption." By definition, apublic key cryptosystem has the property that someone who knows only howto encipher a message cannot use the enciphering key to find thedeciphering key without a prohibitively lengthy computation. Anenciphering function is chosen so that once an enciphering key is known,the enciphering function is relatively easy to compute. However, theinverse of the encrypting transformation function is difficult, orcomputationally infeasible, to compute. Such a function is referred toas a "one way function" or as a "trap door function." In a public keycryptosystem, certain information relating to the keys is public. Thisinformation can be, and often is, published or transmitted in anon-secure manner. Also, certain information relating to the keys isprivate. This information may be distributed over a secure channel toprotect its privacy, (or may be created by a local user to ensureprivacy).

A block diagram of a typical public key cryptographic system isillustrated in FIG. 1. A sender represented by the blocks within dashedline 100 sends a plaintext message P to a receiver, represented by theblocks within dashed line 115. The plaintext message is encrypted into aciphertext message C, transmitted over some transmission medium anddecoded by the receiver 115 to recreate the plaintext message P.

The sender 100 includes a cryptographic device 101, a secure keygenerator 102 and a key source 103. The key source 103 is connected tothe secure key generator 102 through line 104. The secure key generator102 is coupled to the cryptographic device 101 through line 105. Thecryptographic device provides a ciphertext output C on line 106. Thesecure key generator 102 provides a key output on line 107. This outputis provided, along with the ciphertext message 106, to transmitterreceiver 109. The transmitter receiver 109 may be, for example, acomputer transmitting device such as a modem or it may be a device fortransmitting radio frequency transmission signals. The transmitterreceiver 109 outputs the secure key and the ciphertext message on aninsecure channel 110 to the receiver's transmitter receiver 111.

The receiver 115 also includes a cryptographic device 116, a secure keygenerator 117 and a key source 118. The key source 118 is coupled to thesecure key generator 117 on line 119. The secure key generator 117 iscoupled to the cryptographic device 116 on line 120. The cryptographicdevice 116 is coupled to the transmitter receiver 111 through line 121.The secure key generator 117 is coupled to the transmitter receiver 111on lines 122 and 123.

In operation, the sender 100 has a plaintext message P to send to thereceiver 115. Both the sender 100 and the receiver 115 havecryptographic devices 101 and 116, respectively, that rise the sameencryption scheme. There are a number of suitable cryptosystems that canbe implemented in the cryptographic devices. For example, they mayimplement the Data Encryption Standard (DES) or some other suitableencryption scheme.

Sender and receiver also have secure key generators 102 and 117,respectively. These secure key generators implement any one of severalwell known public key exchange schemes. These schemes, which will bedescribed in detail below, include the Diffie-Hellman scheme, the RSAscheme, the Massey-Omura scheme, and the ElGamal scheme.

The sender 100 uses key source 103, which may be a random numbergenerator, to generate a private key. The private key is provided to thesecure key generator 102 and is used to generate an encryption keye_(K). The encryption key e_(K) is transmitted on lines 105 to thecryptographic device and is used to encrypt the plaintext message P togenerate a ciphertext message C provided on line 106 to the transmitterreceiver 109. The secure key generator 102 also transmits theinformation used to convert to the secure key from key source 103 to theencryption key e_(K). This information can be transmitted over aninsecure channel, because it is impractical to recreate the encryptionkey from this information without knowing the private key.

The receiver 115 uses key source 118 to generate a private and securekey 119. This private key 119 is used in the secure key generator 117along with the key generating information provided by the sender 100 togenerate a deciphering key D_(K). This deciphering key D_(K) is providedon line 120 to the cryptographic device 116 where it is used to decryptthe ciphertext message and reproduce the original plaintext message.

The Diffie-Hellman Scheme

A scheme for public key exchange is presented in Diffie and Hellman,"New Directions in Cryptography," IEEE Trans. Inform. Theory, vol.IT-22, pp. 644-654, November 1976 (The "DH" scheme). The DH schemedescribes a public key system based on the discrete exponential andlogarithmic functions. If "q" is a prime number and "a" is a primitiveelement, then X and Y are in a 1:1 correspondence for 1≦X, Y≦(q-1) whereY=a^(x) mod q, and X=log_(a) Y over the finite field. The first discreteexponential function is easily evaluated for a given a and X, and isused to compute the public key Y. The security of the Diffie-Hellmansystem relies on the fact that no general, fast algorithms are known forsolving the discrete logarithm function X=log_(a) Y given X and Y.

In a Diffie-Hellman system, a directory of public keys is published orotherwise made available to the public. A given public key is dependenton its associated private key, known only to a user. However, it is notfeasible to determine the private key from the public key. For example,a sender has a public key, referred to as "ourPub". A receiver has apublic key, referred to here as "theirPub". The sender also has aprivate key, referred to here as "myPri". Similarly, the receiver has aprivate key, referred to here as "theirPri".

There are a number of elements that are publicly known in a public keysystem. In the case of the Diffie-Hellman system, these elements includea prime number p and a primitive element g. p and g are both publiclyknown. Public keys are then generated by raising g to the private keypower (mod p). For example, a sender's public key myPub is generated bythe following equation:

    myPub=g.sup.myPri (mod p)                                  Equation (1)

Similarly, the receiver's public key is generated by the equation:

    theirPub=g.sup.their Pri (mod p)                           Equation (2)

Public keys are easily created using exponentiation and moduloarithmetic. As noted previously, public keys are easily obtainable bythe public. They are published and distributed. They may also betransmitted over non-secure channels. Even though the public keys areknown, it is very difficult to calculate the private keys by the inversefunction because of the difficulty in solving the discrete log problem.

FIG. 2 illustrates a flow chart that is an example of a key exchangeusing a Diffie-Hellman type system. At step 201, a prime number p ischosen. This prime number p is public. Next, at step 202, a primitiveroot g is chosen. This number g is also publicly known. At step 203 anenciphering key e_(K) is generated, the receiver's public key (theirPub)is raised to the power of the sender's private key (myPri). That is:

    (theirPub).sup.myPri (mod p)                               Equation (3)

We have already defined theirPub equal to g^(theirPri) (mod p).Therefore Equation 3 can be given by:

    (g.sup.theirPri).sup.myPri (mod p)                         Equation (4)

This value is the enciphering key e_(K) that is used to encipher theplaintext message and create a ciphertext message. The particular methodfor enciphering or encrypting the message may be any one of several wellknown methods. Whichever encrypting message is used, the cipher key isthe value calculated in Equation 4. The ciphertext message is then sentto the receiver at step 204.

At step 205, the receiver generates a deciphering key d_(K) by raisingthe public key of the sender (myPri) to the private key of the receiver(theirPri) as follows:

    d.sub.K =(myPub.sup.theirPri (mod p)                       Equation (5)

From Equation 1, myPub is equal to g^(myPri) (mod p). Therefore:

    d.sub.k =(g.sup.myPri).sup.theirPri (mod p)                Equation (6)

Since (g^(A))^(B) is equal to (g^(B))^(A), the encipher key e_(K) andthe deciphering key d_(K) are the same key. These keys are referred toas a "one-time pad." A one-time pad is a key used in enciphering anddeciphering a message.

The receiver simply executes the inverse of the transformation algorithmor encryption scheme using the deciphering key to recover the plaintextmessage at step 206. Because both the sender and receiver must use theirprivate keys for generating the enciphering key, no other users are ableto read or decipher the ciphertext message. Note that step 205 can beperformed prior to or contemporaneously with any of steps 201-204.

RSA

Another public key cryptosystem is proposed in Rivest, Shamir andAdelman, "On Digital Signatures and Public Key Cryptosystems," Commun.Ass. Comput. Mach., vol. 21, pp. 120-126, February 1978 (The "RSA"scheme). The RSA scheme is based on the fact that it is easy to generatetwo very large prime numbers and multiply them together, but it is muchmore difficult to factor the result, that is, to determine the verylarge prime numbers from their product. The product can therefore bemade public as part of the enciphering key without compromising theprime numbers that effectively constitute the deciphering key.

In the RSA scheme a key generation algorithm is used to select two largeprime numbers p and q and multiply them to obtain n=pq. The numbers pand q can be hundreds of decimal digits in length. Then Euler's functionis computed as φ(n)=(p-1)(q-1). (φ(n) is the number of integers between1 and n that have no common factor with n). φ(n) has the property thatfor any integer a between 0 and n-1 and any integer k, a^(k)φ(n)+1 =amod n.

A random number E is then chosen between 1 and φ(n)-1 and which has nocommon factors with φ(n). The random number E is the enciphering key andis public. This then allows D=E⁻¹ mod φ(n) to be calculated easily usingan extended version of Euclid's algorithm for computing the greatestcommon divisor of two numbers. D is the deciphering key and is keptsecret.

The information (E, n) is made public as the enciphering key and is usedto transform unenciphered, plaintext messages into ciphertext messagesas follows: a message is first represented as a sequence of integerseach between 0 and n-1. Let P denote such an integer. Then thecorresponding ciphertext integer is given by the relation C=P^(E) mod n.The information (D, n) is used as the deciphering key to recover theplaintext from the ciphertext via P=C^(D) mod n. These are inversetransformations because C^(D) =P^(ED) =P^(k)φ(n)+1 =P.

MASSEY-OMURA

The Massey-Omura cryptosystem is described in U.S. Pat. No. 4,567,600.In the Massey cryptosystem, a finite field F_(q) is selected. The fieldF_(q) is fixed and is a publicly known field. A sender and a receivereach select a random integer e between 0 and q-1 so that the greatestcommon denominator G.C.D. (e, q-1)=1. The user then computes its inverseD=e⁻¹ mod q-1 using the euclidian algorithm. Therefore, De=1 mod q-1.

The Massey-Omura cryptosystem requires that three messages be sent toachieve a secure transmission. Sender A sends message P to receiver B.Sender A calculates random number e_(A) and receiver B calculates randomnumber e_(B). The sender first sends the receiver the element P^(e)_(A). The receiver is unable to recover P since the receiver does notknow e_(A). Instead, the receiver raises the element to his own privatekey e_(B) and sends a second message P^(e) _(A) ^(e) _(B) back to thesender. The sender then removes the effect of e_(A) by raising theelement to the D_(A-th) power and returns P_(eB) to the receiver B. Thereceiver B can read this message by raising the element to the D_(B-th)power.

ELGAMAL CRYPTOSYSTEM

The ElGamal public key cryptosystem utilizes a publicly known finitefield F_(q) and an element g of F*_(q). Each user randomly chooses aninteger a=to a_(A) in the range 0>a>q-1. The integer a is the privatedeciphering key. The public enciphering key is the element g^(a) F_(q).To send a message represented by P to a user A, an integer K is randomlychosen. A pair of elements of F_(q), namely (g^(K), Pg^(aK)) are sent toA. The plaintext message P is encrypted with the key g^(aK). The valueg^(K) is a "clue38 to the receiver for determining the plaintext messageP. However, this clue can only be used by someone who knows the securedeciphering key "a". The receiver A, who knows "a", recovers the messageP from this pair by raising the first element g_(K) ^(ath) and dividingthe result into the second element.

ELLIPTIC CURVES

Another form of public key cryptosystem is referred to as an "ellipticcurve" cryptosystem. An elliptic curve cryptosystem is based on pointson an elliptic curve E defined over a finite field F. Elliptic curvecryptosystems rely for security on the difficulty in solving thediscrete logarithm problem. An advantage of an elliptic curvecryptosystem is there is more flexibility in choosing an elliptic curvethan in choosing a finite field. Nevertheless, elliptic curvecryptosystems have not been widely used in computer-based public keyexchange systems due to their computational intensiveness.Computer-based elliptic curve cryptosystems are slow compared to othercomputer public key exchange systems. Elliptic curve cryptosystems aredescribed in "A Course in Number Theory and Cryptography" (Koblitz,1987, Springer-Verlag, New York).

SUMMARY OF THE INVENTION

The present invention is an elliptic curve cryptosystem that useselliptic curves defined over finite fields comprised of special classesof prime numbers. Special fast classes of numbers are used to optimizethe modulo arithmetic required in the enciphering and decipheringprocess. The class of numbers used in the present invention is generallydescribed by the form 2^(q) -C where C is an odd number and isrelatively small, (for example, no longer than the length of a computerword (16-32 bits)).

When a number is of this form, modulo arithmetic can be accomplishedusing shifts and adds only, eliminating the need for costly divisions.One subset of this fast class of numbers is known as "Mersenne" primes,and are of the form 2^(q) -1. To perform an n mod p operation where p isa Mersenne prime of the form 2^(q) -1, the q LSB's are latched and theremaining bits are added to these q bits. The first q bits of this sumare latched and the remaining bits are added to them. This processcontinues until the sum has q or fewer bits. This sum is the solution.

Another class of numbers that can be used with the present invention areknown as "Fermat" numbers of the form 2^(q) +1, where q is equal to2^(m) and m is an integer. Modulo arithmetic using a Fermat numberinvolves shifting q bits and alternately subtracting and adding nextsuccessive groups of q bits until the resultant has q or fewer bits.

The present invention provides a system that has tunable levels ofsecurity, that is the level of security desired is adjustable. q acts asan encryption bit depth parameter, such that larger values of q provideincreased security. By using a fast class of numbers, only shifts andadds are required for modulo arithmetic. Inversion operations normallyrequire an elliptic curve algebra can be avoided by selecting aninversionless parameterization of the elliptic curve. Fast Fouriertransform (FFT) multiply mod operations, optimized for efficientMersenne arithmetic, allow the calculations of very large q to proceedmore quickly than with other schemes.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a prior art public key exchange system.

FIG. 2 is a flow diagram of a prior art public key exchange transaction.

FIG. 3 is a flow diagram illustrating the key exchange of the presentinvention.

FIG. 4 is a block diagram of a computer system on which the presentinvention may be implemented.

FIG. 5 is a diagram illustrating the shift and add operations forperforming mod p arithmetic using Mersenne primes.

FIG. 6 is a diagram illustrating the operations for performing mod parithmetic using Fermat numbers.

FIG. 7 is a diagram illustrating the operations for performing mod parithmetic using fast class numbers.

FIG. 8 is a block diagram of the present invention.

FIG. 9 is a flow diagram illustrating the operation of one embodiment ofthe present invention.

DETAILED DESCRIPTION OF THE INVENTION

An elliptic curve encryption scheme is described. In the followingdescription, numerous specific details, such as number of bits,execution time, etc., are set forth in detail to provide a more thoroughdescription of the present invention. It will be apparent, however, toone skilled in the art, that the present invention may be practicedwithout these specific details. In other instances, well known featureshave not been described in detail so as not to obscure the presentinvention.

A disadvantage of prior art computer-implemented elliptic curveencryption schemes is they are unsatisfactorily slow compared to otherprior art computer-implemented encryption schemes. The modulo arithmeticand elliptical algebra operations required in a prior art elliptic curvecryptosystem require that divisions be performed. Divisions increasecomputer CPU (central processing unit) computational overhead. CPU's canperform addition and multiplication operations more quickly, and infewer processing steps, than division operations. Therefore, prior artelliptic curve cryptosystems have not been previously practical ordesirable as compared to other prior art cryptosystems, such asDiffie-Hellman and RSA schemes.

The present invention provides methods and apparatus for implementing anelliptic curve cryptosystem for public key exchange that does notrequire explicit division operations. The advantages of the preferredembodiment of the present invention are achieved by implementing fastclasses of numbers, inversionless parameterization, and FFT multiply modoperations.

Elliptic Curve Algebra

The elliptic curve used with the present invention is comprised ofpoints (x,y)e F_(p) k X F_(p) k satisfying:

    b y.sup.2 =x.sup.3 +a x.sup.2 +x                           Equation (7)

together with a "point at infinity" a.

Sender ("our") and recipient ("their") private keys are assumed to beintegers, denoted:

ourPri, theirPri e Z

Next, parameters are established for both sender and recipient. Theparameters are

q, so that p=2^(q) -C is a fast class number (q is the "bit-depth"). Thevalue q is a publicly known value.

k, so that F_(p) k will be the field, and where k is publicly known.

(x₁, Y₁) e F_(p) k, the initial x-coordinate, which is publicly known.

a e F_(p) k, the curve-defining parameter (b is not needed). The value ais also publicly known.

The present invention uses an operation referred to as "ellipticmultiplication" and represented by the symbol ^("o"). The operation ofelliptic multiplication can be described as follows:

An initial point (X₁, Y₁) on the curve of Equation 7 is defined. For theset of integers n, expression n ^(o) (X₁, Y₁) denotes the point (X_(n),Y_(n)) obtained via the following relations, known as adding anddoubling rules.

    X.sub.n+1 =((Y.sub.n -Y.sub.1)/(X.sub.n -X.sub.1)).sup.2 -X.sub.1 -X.sub.n Equation (8)

    Y.sub.n+1 =-Y.sub.1 +((Y.sub.n -Y.sub.1)/(X.sub.n -X.sub.1))(X.sub.1 -X.sub.n+1)                                               Equation (9)

When (X₁, Y₁)=(X_(n), Y_(n)), the doubling relations to be used are:

    X.sub.n+1 =((3X.sub.1.sup.2 +a)/2Y.sub.1).sup.2 -2X.sub.1 ;Equation (10)

    Y.sub.n+1 =-Y.sub.1 +((3X.sub.1.sup.2 +a)/2Y.sub.1)(X.sub.1 -X.sub.n+1)Equation (11)

Because arithmetic is performed over the field F_(p) k, all operationsare to be performed mod p. In particular, the division operation inequations 8 to 11 involve inversions mod p.

Elliptic Curve Public Key Exchange

It is necessary that both sender and recipient use the same set of suchparameters. Both sender and recipient generate a mutual one-time pad, asa particular χ-coordinate on the elliptic curve.

In the following description, the terms "our" and "our end" refer to thesender. The terms "their" and "their end" refer to the receiver. Thisconvention is used because the key exchange of the present invention maybe accomplished between one or more senders and one or more receivers.Thus, "our" and "our end" and "their" and "their end" refers to one ormore senders and receivers, respectively.

The public key exchange of the elliptic curve cryptosystem of thepresent invention is illustrated in the flow diagram of FIG. 3.

Step 301--At our end, a public key is computed: ourPub e F_(p) k

    ourPub=(ourPri).sup.0 (x.sub.1,y.sub.1)                    Equation (12)

Step 302--At their end, a public key is computed: theirPub e Fpk

    theirPub=(theirPri) .sup.o (x.sub.1,y.sub.1)               Equation (13)

Step 303--The two public keys ourPub and theirPub are published, andtherefore known to all users.

Step 304--A one-time pad is computed at our end: ourPad e F_(p) k

    ourPad=(ourPri) .sup.o (theirPub)=(ourPri).sup.o (theirPri) .sup.o (x.sub.1, y.sub.1)                                        Equation (14)

Step 305--A one-time pad is computed at their end: theirPad e F_(p) k

    theirPad=(theirPri) .sup.o (ourPub)=(theirPri) .sup.o (ourPri) .sup.o (x.sub.1,y.sub.1)                                         Equation (15)

The elements (theirPri) ^(o) (ourPri) ^(o) (x₁, y₁) being part of afinite field, form an abelian group. Therefore, the order of operationof equations 14 and 15 can be changed without affecting the result ofthe equations. Therefore:

    ourPad=(ourPri).sup.o (theirPri).sup.o (x.sub.1,y.sub.1)=(theirPri).sup.o (ourPri).sup.o (x.sub.1,y.sub.1)=theirPad                 Equation (16)

Since both the sender and receiver use the same one time pad, themessage encrypted by the sender can be decrypted by the recipient, usingthe one time pad. (Note that step 305 can be executed prior to orcontemporaneously with any of steps 301-304).

At step 306, the sender encrypts plaintext message P using ourPad, andtransmits ciphertext message C to the receiver. At step 307, thereceiver decrypts ciphertext message C to recover plaintext message P,using theirPad.

Fast Class Numbers

Elliptic curve cryptosystems make use of modulo arithmetic to determinecertain parameters, such as public keys, one time pads, etc. The use ofmodulo arithmetic serves the dual purpose of limiting the number of bitsin the results of equations to some fixed number, and providingsecurity. The discrete log problem is asymmetrical in part because ofthe use of modulo arithmetic. A disadvantage of modulo arithmetic is theneed to perform division operations. The solution to a modulo operationis the remainder when a number is divided by a fixed number. Forexample, 12 mod 5 is equal to 2. (5 divides into 12 twice with aremainder of 2, the remainder 2 is the solution). Therefore, moduloarithmetic requires division operations.

Special fast classes of numbers are used in the present invention tooptimize the modulo arithmetic required in the enciphering anddeciphering process by eliminating the need for division operations. Theclass of numbers used in the present invention is generally described bythe form 2^(q) -C where C is an odd number and is relatively small,(e.g. no longer than the length of a computer word.

When a number is of this form, modulo arithmetic can be accomplishedusing shifts and adds only, eliminating the need for divisions. Onesubset of this fast class is known as "Mersenne" primes, and are of theform 2^(q) -1. Another class that can be used with the present inventionare known as "Fermat" numbers of the form 2^(q) +1, where q is equal to2^(m). Fermat numbers may be prime or not prime in the presentinvention.

The present invention utilizes elliptic curve algebra over a finitefield F_(p) k where p=2^(q) -C and p is a fast class number. Note thatthe equation 2^(q) -C does not result in a prime number for all valuesof q. and C For example, when q is equal to 4, and C is equal to 1,2^(q) -C is equal to 15, not a prime. However, when q has a value of 2,3, or 5, and C=1 the equation 2^(q) -C generates the prime numbers 3, 7,and 31.

The present invention implements elliptic curves over a finite fieldF_(p) k where p is 2q-C is an element of a fast class of numbers. Whenpracticed on a computer using binary representations of data, the use offast class numbers allows the mod p operations to be accomplished usingonly shifts and adds. By contrast, the use of "slow" numbers requiresthat time consuming division operations be executed to perform mod parithmetic. The following examples illustrate the advantage of fastclass number mod p arithmetic.

Example 1: base 10 mod p division

Consider the 32 bit digital number n, wheren=11101101111010111100011100110101 (In base 10 this number is3,991,652,149).

Now consider n mod p where p is equal to 127. The expression n mod 127can be calculated by division as follows: ##STR1##

The remainder 112 is the solution to n mod 127.

Example 2: Mersenne Prime mod p Arithmetic

In the present invention, when p is a Mersenne prime where p=2^(q) -1,the mod p arithmetic can be accomplished using only shifts and adds,with no division required. Consider again n mod p where n is3,991,652,149 and p is 127. When p is 127, q is equal to 7, from p=2^(q)-1; 127=2⁷ -1=128-1=127.

The mod p arithmetic can be accomplished by using the binary form of n,namely 11101101111010111100011100110101. Referring to FIG. 5, the shiftsand adds are accomplished by first latching the q least significant bits(LSB's) 501 of n, namely 0110101. The q LSB's 502 of the remainingdigits, namely 0001110, are then added to q digits 501, resulting in sum503 (1000011). The next q LSB's 504 of n, (0101111), are added to sum503, generating sum 505, (1110010). Bits 506 of n (1101111) are added tosum 505, to result in sum 507, (11100001).

The remaining bits 508 (1110), even though fewer in number than q bits,are added to sum 507 to generate sum 509 (11101111). This sum hasgreater than q bits. Therefore, the first q bits 510 (1101111) aresummed with. the next q bits 511 (in this case, the single bit 1), togenerate sum 512 (1110000). This sum, having q or fewer bits, is thesolution to n mod p. 1110000=2⁶ +2⁵ +2⁴ =64+32+16=112.

Thus, the solution 112 to n mod 127 is determined using only shifts andadds when an elliptic curve over a field of Mersenne primes is used. Theuse of Mersenne primes in conjunction with elliptic curve cryptosystemseliminates explicit divisions.

Example 3: Fermat Number mod p Arithmetic

In the present invention, when p is a Fermat number where p=2^(q) +1,the mod p arithmetic can be accomplished using only shifts, adds, andsubtracts (a negative add), with no division required. Consider again nmod p where n is 3,991,652,149 and where p is now 257. When p is 257, qis equal to 8, from p=2^(q) +1; 257=2⁸ +1=256+1=257.

The mod p arithmetic can be accomplished by using the binary form of n,namely 11101101111010111100011100110101. Referring to FIG. 6, the shiftsand adds are accomplished by first latching the q (8) least significantbits (LSB's) 601 (00110101). The next q LSB's 602 of the remainingdigits, namely 11000111, are to be subtracted from q digits 601. Toaccomplish this, the 1's complement of bits 602 is generated and a 1 isadded to the MSB side to indicate a negative number, resulting in bits602' (100111000). This negative number 602' is added to bits 601 togenerate result 603 (101101101). The next q LSB's 604 of n, (11101011),are added to sum 603, generating result 605, (1001011000). Bits 606 of n(11101101) are to be subtracted from result 605. Therefore, the 1'scomplement of bits 606 is generated and a negative sign bit of one isadded on the MSB side to generate bits 606' (100010010). Bits 606' isadded to result 605, to generate sum 607, (1101101010).

Sum 607 has more than q bits so the q LSB's are latched as bits 608(01101010). The next q bits (in this case, only two bits, 11) are addedto bits 608, generating sum 610 (01101101). This slim, having q or fewerbits, is the solution to n mod p. 01101101=2⁶ +2⁵ +2³ +2² +2⁰ =64+32+8+4+1=109.

Example 4: Fast Class mod arithmetic

In the present invention, when p is a number of the class p=2^(q) -C,where C is and odd number and is relatively small, (e.g. no greater thanthe length of a digital word), the mod p arithmetic can be accomplishedusing only shifts and adds, with no division required. Consider again nmod p where n is 685 and where p is 13. When p is 13, q is equal to 4and C is equal to 3, from p=2^(q) -C; 13=2⁴ -3=16-3=13.

The mod p arithmetic can be accomplished by using the binary form of n,namely 1010101101. Referring to FIG. 7, the shifts and adds areaccomplished by first latching the q (4) least significant bits (LSB's)701 of n, namely 1101. The remaining bits 702 (101010) are multiplied byC (3) to generate product 703 (1111110). Product 703 is added to bits701 to generate sum 704 (10001011). The q least significant bits 705(1011) of sum 704 are latched. The remaining bits 706 (1000) aremultiplied by C to generate product 707 (11000). Product 707 is added tobits 705 to generate sum 708 (100011). The q least significant bits 709(0011) of sum 708 are latched. The remaining bits 710 (10) aremultiplied by C to generate product 711 (110). Product 711 is added tobits 709 to generate sum 712 (1001). Sum 712, having q or fewer bits, isthe solution to n mod p. 1001=2³ +2⁰ =8+1= 9. 685 divided by 13 resultsin a remainder of 9. The fast class arithmetic provides the solutionusing only shifts, adds, and multiplies.

Shift and Add Implementation

Fast Mersenne mod operations can be effected via a well known shiftprocedure. For p=2^(q) -1 we can use:

    x=(x&p)+(x>>q)                                             Equation (17)

a few times in order to reduce a positive x to the appropriate residuevalue in the interval 0 through p-1 inclusive. This procedure involvesshifts and add operations only. Alternatively, we can represent anynumber x (mod p) by:

    x=a+b 2.sup.(q+1)/2 =(a, b)                                Equation (18)

If another integer y be represented as (c, d), we have:

    xy (mod p)=(ac+2bd, ad+bc)                                 Equation (19)

after which some trivial shift-add operations may be required to producethe correct reduced residue of xy.

To compute an inverse (mod p), there are at least two ways to proceed.One is to use a binary form of the classical extended-GCD procedure.Another is to use a relational reduction scheme. The relational schemeworks as follows:

Given p=2^(q) -1, x≠0 (mod p), to return x⁻¹ (mod p):

1) Set (a, b)=(1, 0) and (y, z)=(x, p);

2) If (y==0) return(z);

3) Find e such that 2^(e) //y;

4) Set a=2^(q-e) a (mod p);

5) If(y==1) return(a);

6) Set (a, b)=(a+b, a-b) and (y, z)=(y+z, y-z);

7) Go to (2).

The binary extended-GCD procedure can be performed without explicitdivision via the operation [a/b]₂, defined as the greatest power of 2not exceeding a/b:

Given p, and x≠0 (mod p), to return x⁻¹ (mod p):

1) If (x==1) return(1);

2) Set (x, v0)=(0, 1) and (u₁, v₁)=(p, x);

3) Set u₀ =[u₁ /v₁ ]₂ ;

4) Set (x, v₀)=(v₀, x-u₀ v₀) and (u₁, v₁)=(v₁, u₁ -u₀ v₁);

5) If (v₁ ==0) return(x); else go to (3).

The present invention may be implemented on any conventional or generalpurpose computer system. An example of one embodiment of a computersystem for implementing this invention is illustrated in FIG. 4. Akeyboard 410 and mouse 411 are coupled to a bi-directional system bus419. The keyboard and mouse are for introducing user input to thecomputer system and communicating that user input to CPU 413. Thecomputer system of FIG. 4 also includes a video memory 414, main memory415 and mass storage 412, all coupled to bi-directional system bus 419along with keyboard 410, mouse 411 and CPU 413. The mass storage 412 mayinclude both fixed and removable media, such as magnetic, optical ormagnetic optical storage systems or any other available mass storagetechnology. The mass storage may be shared on a network, or it may bededicated mass storage. Bus 419 may contain, for example, 32 addresslines for addressing video memory 414 or main memory 415. The system bus419 also includes, for example, a 32-bit data bus for transferring databetween and among the components, such as CPU 413, main memory 415,video memory 414 and mass storage 412. Alternatively, multiplexdata/address lines may be used instead of separate data and addresslines.

In the preferred embodiment of this invention, the CPU 413 is a 32-bitmicroprocessor manufactured by Motorola, such as the 68030 or 68040.However, any other suitable microprocessor or microcomputer may beutilized. The Motorola microprocessor and its instruction set, busstructure and control lines are described in MC68030 User's Manual, andMC68040 User's Manual, published by Motorola Inc. of Phoenix, Ariz.

Main memory 415 is comprised of dynamic random access memory (DRAM) andin the preferred embodiment of this invention, comprises 8 megabytes ofmemory. More or less memory may be used without departing from the scopeof this invention. Video memory 414 is a dual-ported video random accessmemory, and this invention consists, for example, of 256 kbytes ofmemory. However, more or less video memory may be provided as well.

One port of the video memory 414 is coupled to video multiplexer andshifter 416, which in turn is coupled to video amplifier 417. The videoamplifier 417 is used to drive the cathode ray tube (CRT) raster monitor418. Video multiplexing shifter circuitry 416 and video amplifier 417are well known in the art and may be implemented by any suitable means.This circuitry converts pixel data stored in video memory 414 to araster signal suitable for use by monitor 418. Monitor 418 is a type ofmonitor suitable for displaying graphic images, and in the preferredembodiment of this invention, has a resolution of approximately1020×832. Other resolution monitors may be utilized in this invention.

The computer system described above is for purposes of example only. Thepresent invention may be implemented in any type of computer system orprogramming or processing environment.

Block Diagram

FIG. 8 is a block diagram of the present invention. A sender,represented by the components within dashed line 801, encrypts aplaintext message P to a ciphertext message C. This message C is sent toa receiver, represented by the components within dashed line 802. Thereceiver 802 decrypts the ciphertext message C to recover the plaintextmessage P.

The sender 801 comprises an encryption/decryption means 803, an ellipticmultiplier 805, and a private key source 807. The encryption/decryptionmeans 803 is coupled to the elliptic multiplier 805 through line 809.The elliptic multiplier 805 is coupled to the private key source 807through line 811.

The encryption/decryption means 804 of receiver 802 is coupled toelliptic multiplier 806 through line 810. The elliptic multiplier 806 iscoupled to the private key source 808 through line 812.

The private key source 807 of the sender 801 contains the secure privatepassword of the sender, "ourPri". Private key source 807 may be astorage register in a computer system, a password supplied by the senderto the cryptosystem when a message is sent, or even a coded, physicalkey that is read by the cryptosystem of FIG. 8 when a message is sent orreceived. Similarly, the private key source 808 of receiver 802 containsthe secure private password of the receiver, namely, "theirPri".

A separate source 813 stores publicly known information, such as thepublic keys "ourPub" and "theirPub" of sender 801 and receiver 802, theinitial point (x₁, Y₁), the field F_(p) K, and curve parameter "a". Thissource of information may be a published directory, an on-line sourcefor use by computer systems, or it may transmitted between sender andreceiver over a non-secure transmission medium. The public source 813 isshown symbolically connected to sender 801 through line 815 and toreceiver 802 through line 814.

In operation, the sender and receiver generate a common one time pad foruse as an enciphering and deciphering key in a secure transmission. Theprivate key of the sender, ourPri, is provided to the ellipticmultiplier 805, along with the sender's public key, theirPub. Theelliptic multiplier 805 computes an enciphering key e_(k) from (ourPri)^(o) (theirPub) mod p. The enciphering key is provided to theencryption/decryption means 803, along with the plaintext message P. Theenciphering key is used with an encrypting scheme, such as the DESscheme or the elliptic curve scheme of the present invention, togenerate a ciphertext message C. The ciphertext message is transmittedto the receiver 802 over a nonsecure channel 816.

The receiver 802 generates a deciphering key d_(k) using the receiver'sprivate key, theirPri. TheirPri is provided from the private key source808 to the elliptic multiplier 804, along with sender's public key,ourPub, (from the public source 813). Deciphering key d_(k) is generatedfrom (theirPri) ^(o) (ourPub) mod p. The deciphering key d_(k) is equalto the enciphering key e_(k) due to the abelian nature of the ellipticmultiplication function. Therefore, the receiver 802 reverses theencryption scheme, using the deciphering key d_(k), to recover theplaintext message P from the ciphertext message C.

The encryption/decryption means and elliptic multiplier of the sender801 and receiver 802 can be implemented as program steps to be executedon a microprocessor.

Inversionless Parameterization

The use of fast class numbers eliminates division operations in mod parithmetic operations. However, as illustrated by equations 13-16 above,the elliptic multiply operation ^("o") requires a number of divisionoperations to be performed. The present invention reduces the number ofdivisions required for elliptic multiply operations by selecting theinitial parameterization to be inversionless. This is accomplished byselecting the initial point so that the "Y" terms are not needed.

In the present invention, both sender and recipient generate a mutualone-time pad, as a particular x-coordinate on the elliptic curve. Bychoosing the initial point (X₁, Y₁) appropriately, divisions in theprocess of establishing multiples n ^(o) (X1, Y1) are eliminated. In thesteps that follow, the form

    n .sup.o (x.sub.m /Z.sub.m)                                Equation (20)

for integers n, denotes the coordinate (X_(n+m) /Z_(n+m)). For x=X/Z thex-coordinate of the multiple n(x, y) as X_(n) /Z_(n) , is calculatedusing a "binary ladder" method in accordance with the adding-doublingrules, which involve multiply mod operations:

    If i≠j: X.sub.i+j =Z.sub.i-j (X.sub.i X.sub.j -Z.sub.i Z.sub.j).sup.2 Equation (21)

    Z.sub.i+j =X.sub.i-j (X.sub.i Z.sub.j -Z.sub.i X.sub.j).sup.2 Equation (22)

Otherwise, if i=j:

    Z.sub.2i =(X.sub.i.sup.2 -Z.sub.i.sup.2).sup.2             Equation (23)

    Z.sub.2i =4 X.sub.i Z.sub.i (X.sub.i.sup.2 +a X.sub.i Z.sub.i +Z.sub.1.sup.2)                                           Equation (24)

These equations do not require divisions, simplifying the calculationswhen the present invention is implemented in the present preferredembodiment. This is referred to as "Montgomery parameterization" or"inversionless parameterization" (due to the absence of divisionoperations), and is described in "Speeding the Pollard and EllipticCurve Methods of Factorization" Montgomery, P. 1987 Math. Comp., 48(243-264). When the field is simply F_(p) this scheme enables us tocompute multiples nx via multiplication, addition, and (rapid) Mersennemod operations. This also holds when the field is F_(p) 2. Because p=3(mod 4) for any Mersenne prime p, we may represent any X_(i) or Z_(i) asa complex integer, proceeding with complex arithmetic for which bothreal and imaginary post-multiply components can be reduced rapidly (modp). We also choose Z₁ =1, so that the initial point on the curve is (X₁/1, y) where y will not be needed.

Using both fast class numbers and inversionless parameterization, apublic key exchange using the method of the present invention canproceed as follows. In the following example, the prime is a Mersenneprime. However, any of the fast class numbers described herein may besubstituted.

1) At "our" end, use parameter a, to compute a public key: ourPub eF_(p) k

(X/Z)=ourPri ^(o) (X₁ /1) ourPub=XZ⁻¹

2) At "their" end, use parameter a, to compute a public key: theirPub eFpk

(X/Z)=theirPri ^(o) (X₁ /1) theirPub=XZ⁻¹

3) The two public keys ourPub and theirPub are published, and thereforeare known.

4) Compute a one-time pad: ourPad e F_(p) k

(X/Z)=ourPri ^(o) (theirPub/1) ourPad=XZ⁻¹

5) Compute a one-time pad: theirPad e F_(p) k

(X/Z)=theirPri ^(o) (ourPub/1) theirPad=XZ⁻¹

The usual key exchange has been completed, with

ourPad=theirPad

Message encryption/decryption between "our" end and "their" end mayproceed according to this mutual pad.

FFT Multiply

For very large exponents, such as q>5000, it is advantageous to performmultiplication by taking Fourier transforms of streams of digits. FFTmultiply works accurately, for example on a 68040-based NeXTstation, forgeneral operations xy (mod p) where p=2^(q) -1 has no more than q=2²⁰(about one million) bits. Furthermore, for Mersenne p there are furthersavings when one observes that order-q cyclic convolution of binary bitsis equivalent to multiplication (mod 2^(q) -1). The use of FFT multiplytechniques results in the ability to perform multiply-mod in a timeroughly proportional to q log q, rather than q².

Elliptic curve algebra can be sped up intrinsically with FFT techniques.Let X denote generally the Fourier transform of the digits of X, thistransform being the same one used in FFT multiplication. Then we cancompute coordinates from equations 21-24. To compute X_(i+j) forexample, we can use five appropriate transforms, (X_(i), X_(j), Z_(i),Z_(j), and Z_(i-j)) (some of which can have been stored previously) tocreate the transform:

    X.sub.i+j =Z.sub.i-j (X.sub.i X.sub.j -Z.sub.i Z.sub.j).sup.2

In this way the answer X_(i+j) can be obtained via 7 FFT's. (Note thatthe usual practice of using 2 FFT's for squaring and 3 FFT's formultiplication results in 11 FFT's for the "standard" FFT approach). Theratio 7/11 indicates a significant savings for the intrinsic method. Incertain cases, such as when p is a Mersenne prime and one also has anerrorless number-theoretic transform available, one can save spectrafrom the past and stay in spectral space for the duration of longcalculations; in this way reducing times even further.

A flow diagram illustrating the operation of the present invention whenusing fast class numbers, inversionless parameterization and FFTmultiply operations is illustrated in FIG. 9. At step 901, a fast classnumber p is chosen where p=2^(q) -C. The term q is the bit depth of theencryption scheme. The greater the number of bits, the greater thesecurity. For large values of q, FFT multiply operations are used tocalculate p. The term p is made publicly available.

At step 902, the element k for the field F_(p) k is chosen and madepublic. At step 903, an initial point (X₁ /Z) on the elliptic curve isselected. By selecting the initial point to be inversionless, costlydivides are avoided. The initial point is made public. The curveparameter a is chosen at step 904 and made public.

At step 905, the sender computes X₁ /Z=ourPri ^(o) (X₁ /1) usinginversionless parameterization. The sender's public key is generatedourPub =(XZ⁻¹)(mod p). The receiver's public key theirPub=(XZ⁻¹)(mod p),is generated at step 906.

A one time pad for the sender, ourPad, is generated at step 907.X/Z=(ourPri) ^(o) (theirPub/1). ourPad=XZ⁻¹ (mod p). At step 908, a onetime pad for the receiver, theirPad, is generated. X/Z=(theirPri) ^(o)(ourPub/1). theirPad =XZ⁻¹ (mod p). The calculation of ourPad andtheirPad utilizes FFT multiplies to eliminate the need to calculate theinversion Z⁻¹. At step 909, the sender converts a plaintext message P toa ciphertext message C using ourPad. The ciphertext message C istransmitted to the receiver. At step 910, the receiver recovers theplaintext message P by deciphering the ciphertext message C usingtheirPad.

FEE Security

The algebraic factor M₈₉ =2⁸⁹ -1, which is a Mersenne prime, occurs with"natural" statistics when the elliptic curve method (ECM) was employed.This was shown in attempts to complete the factorization of M₄₄₅ = 2⁴⁴⁵-1 (this entry in the Cunningham Table remains unresolved as of thiswriting). In other words, for random parameters a the occurrence k(X₁/1)=O for elliptic curves over F_(p) with p=M₈₉ was statisticallyconsistent with the asymptotic estimate that the time to find the factorM₈₉ of M₄₄₅ be O(exp(√(2 log p log log p))). These observations in turnsuggested that finding the group order over F_(p) is not "accidentally"easier for Mersenne primes p, given the assumption of random aparameters.

Secondly, to check that the discrete logarithm problem attendant to FEEis not accidentally trivial, it can be verified, for particular aparameters, that for some bounded set of integers N

    (p.sup.N -1) (X.sub.1 /1)≠O

The inequality avoids the trivial reduction of the discrete logarithmevaluation to the equivalent evaluation over a corresponding finitefield. Failures of the inequality are extremely rare, in fact nonon-trivial instances are known at this time for q>89.

The present invention provides a number of advantages over prior artschemes, particularly factoring schemes such a the RSA scheme. Thepresent invention can provide the same security with fewer bits,increasing speed of operation. Alternatively, for the same number ofbits, the system of the present invention provides greater security.

Another advantage of the present cryptosystem over prior artcryptosystems is the distribution of private keys. In prior art schemessuch as RSA, large prime numbers must be generated to create privatekeys. The present invention does not require that the private key be aprime number. Therefore, users can generate their own private keys, solong as a public key is generated and published using correct andpublicly available parameters p, F_(p) k, (X₁ /Z) and "a". A user cannotgenerate its own private key in the RSA system.

The present invention can be implemented in the programming language C.The following are examples of programmatic interfaces (.h files) andtest programs (.c files) suitable for implementing the presentinvention. ##SPC1##

I claim:
 1. A method for using a processor to electronically convert aplaintext message to a ciphertext output for transmission over atransmission medium, said method comprising the steps of:using anelliptic multiplication means in said processor for performing anelliptic multiplication of a private key and a point, wherein said pointis a point on an elliptic curve over a finite field F_(p) k , where p isone of a class of numbers such that mod p arithmetic is performed insaid processor without performing division operations, wherein saidelliptic multiplication results in an enciphering key; using anencryption/decryption means to convert said plaintext message to saidciphertext output using said enciphering key; and using a transmittingmeans to transmit said ciphertext output over said transmission medium.2. The method of claim 1 wherein p is a Mersenne prime given by 2^(q)-1.
 3. The method of claim 2 wherein said mod p arithmetic is performedby the steps of:shifting q LSB's of a binary number and adding theshifted q LSB's to the remaining q LSB's to generate a sum; andrepeating the previous step on the sum until a sum is generated of q orfewer bits.
 4. The method of claim 1 wherein p is a Fermat number givenby 2^(q) +1 and q is given by 2^(m).
 5. The method of claim 4 whereinsaid mod p arithmetic is performed by the step of:shifting q bits of abinary number and alternately subtracting and adding next successivegroups of q bits until the resultant has q or fewer bits.
 6. The methodof claim 1 wherein p is given by 2^(q) -C, where C is a binary numberhaving a length no greater than 32 bits.
 7. The method of claim 6wherein said mod p arithmetic is performed by the steps of:latching qbits of a binary number; multiplying the remainder of said binary numberby C to generate a product; adding said product to said q bits togenerate a sum; repeating said latching, multiplying and adding steps onsaid sum until q or fewer bits remain.
 8. The method of claim 2, 4, or 6wherein q is an encryption bit depth parameter such that increasing qincreases security of said transmission medium over which saidciphertext output is transmitted.
 9. A method for performing ellipticcurve cryptography in a computer, said method comprising the stepsof:performing elliptic curve cryptography by performing mod p arithmeticin said computer without using division operations, wherein p is aMersenne prime given by 2^(q) -1, and wherein said mod p arithmetic isperformed by the steps of: said computer shifting q least significantbits (LSB'S) of a binary number and adding the shifted q LSB's to theremaining q LSB's to generate a sum; and said computer repeating theprevious step on the sum until a sum is generated of q or fewer bits.10. A method for performing elliptic curve cryptography in a computer,said method comprising the steps of:performing elliptic curvecryptography by performing mod p arithmetic in said computer withoutusing division operations, wherein p is a Fermat number given by 2^(q)+1 and q is given by 2^(m), and wherein said mod p arithmetic isperformed by the step of: said computer shifting q bits of a binarynumber and alternately subtracting and adding next successive groups ofq bits until the resultant has q or fewer bits.
 11. A method forperforming elliptic curve cryptography in a computer, said methodcomprising the steps of:performing elliptic curve cryptography byperforming mod p arithmetic in said computer without using divisionoperations, wherein p is given by 2^(q) -C, where C is a binary numberhaving a length no greater than 32 bits, and wherein said mod parithmetic is performed by the steps of: said computer latching q bitsof a binary number; said computer multiplying the remainder of saidbinary number by C to generate a product; said computer adding saidproduct to said q bits to generate a sum; and said computer repeatingsaid latching, multiplying and adding steps on said sum until q or fewerbits remain.
 12. A processing means for performing ellipticmultiplication without performing division operations, said processingmeans comprising:a transmitter comprising encryption/decryption means;an elliptic multiplication means coupled to said transmitter; and aprivate key source coupled to said elliptic multiplication means,wherein said processing means causes said elliptic multiplication meansto perform an elliptic multiplication of a private key and a point,wherein said point is a point on an elliptic curve over a finite fieldF_(p) k , where p is one of a class of numbers such that mod parithmetic is performed in said processing means without performingdivision operations, and wherein said elliptic multiplication results inan enciphering key.
 13. The processing means of claim 12 wherein saidencryption/decryption means uses said enciphering key and a plaintextmessage to generate a ciphertext output.
 14. The processing means ofclaim 13 wherein said ciphertext output is transmitted over atransmission medium by a transmitting means.
 15. The processing means ofclaim 12 wherein said private key source provides said private key tosaid elliptic multiplication means.
 16. The processing means of claim 12wherein said private key source is comprised of a storage register insaid processing means.
 17. The processing means of claim 12 wherein saidprocessing means is a 32-bit microprocessor.
 18. The processing means ofclaim 17 wherein said 32-bit microprocessor is a Motorola® 68030 or68040.
 19. The processing means of claim 12 wherein p is a Mersenneprime given by 2^(q) -1.
 20. The processing means of claim 19 whereinsaid mod p arithmetic is performed by the steps of:said ellipticmultiplication means shifting q LSB's of a binary number and adding theshifted q LSB's to the remaining q LSB's to generate a sum; and saidelliptic multiplication means repeating the previous step on the sumuntil a sum is generated of q or fewer bits.
 21. The processing means ofclaim 12 wherein p is a Fermat number given by 2^(q) +1 and q is givenby 2^(m).
 22. The processing means of claim 21 wherein said mod parithmetic is performed by the step of:said elliptic multiplicationmeans shifting q bits of a binary number and alternately subtracting andadding next successive groups of q bits until the resultant has q orfewer bits.
 23. The processing means of claim 12 wherein p is given by2^(q) -C, where C is a binary number having a length no greater than 32bits.
 24. The processing means of claim 23 wherein said mod p arithmeticis performed by the steps of:said elliptic multiplication means latchingq bits of a binary number; said elliptic multiplication meansmultiplying the remainder of said binary number by C to generate aproduct; said elliptic multiplication means adding said product to saidq bits to generate a sum; and said elliptic multiplication meansrepeating said latching, multiplying and adding steps on said sum untilq or fewer bits remain.
 25. A processing means for performing ellipticcurve cryptography, said processing means comprising an ellipticmultiplication means for performing elliptic curve cryptography byperforming mod p arithmetic without performing division operations. 26.The processing means of claim 25 further comprising the step ofperforming said elliptic curve cryptography over a finite field F_(p) k,where p is one of a class of numbers such that said mod p arithmetic isperformed in said computer without performing division operations. 27.The processing means of claim 25 wherein p is a Mersenne prime given byb 2^(q) -1, and wherein said mod p arithmetic is performed by the stepsof:said elliptic multiplication means shifting q least significant bits(LSB's) of a binary number and adding the shifted q LSB's to theremaining q LSB's to generate a sum; and said elliptic multiplicationmeans repeating the previous step on the sum until a sum is generated ofq or fewer bits.
 28. The processing means of claim 25 wherein p is aFermat number given by 2^(q) +1 and q is given by 2^(m), and whereinsaid mod p arithmetic is performed by the step of:said ellipticmultiplication means shifting q bits of a binary number and alternatelysubtracting and adding next successive groups of q bits until theresultant has q or fewer bits.
 29. The processing means of claim 25wherein p is given by 2^(q) -C, where C is a binary number having alength no greater than 32 bits, and wherein said elliptic multiplicationmeans performs said mod p arithmetic is by the steps of:said ellipticmultiplication means latching q bits of a binary number; said ellipticmultiplication means multiplying the remainder of said binary number byC to generate a product; said elliptic multiplication means adding saidproduct to said q bits to generate a sum; and said ellipticmultiplication means repeating said latching, multiplying and addingsteps on said sum until q or fewer bits remain.